Agah Burak DEMİRKAN Ahmet ÇOBAN Ahmet SÖNMEZ Uğurhan KUTBAY

Slides:



Advertisements
Benzer bir sunumlar
KAFA Open-Source/Open-Implementation, 32-bit CPU
Advertisements

ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama
BİLGİSAYAR, DONANIM VE YAZILIM KAVRAMLARI
SelCPU Temmuz 2008 Bilg.Bil.Müh.Selçuk BAŞAK SelSistem Bilgi ve İletişim Teknolojileri
Prof. Dr. Eşref ADALI Yrd. Doç. Dr. Şule Gündüz Öğüdücü Sürüm-A
Değişkenler ve bellek Değişkenler
Network Layer Bölüm Ağ Katmanı Computer Networking: A Top Down Approach 4 th edition. Jim Kurose, Keith Ross Addison-Wesley, July 2007.
Eğitim Programı Kurulum Aşamaları E. Savaş Başcı ASO 1. ORGANİZE SANAYİ BÖLGESİ AVRUPA BİLGİSAYAR YERKİNLİĞİ SERTİFİKASI EĞİTİM PROJESİ (OBİYEP)
DERS 7 PIC 16F84 PROGRAMLAMA.
Ali AKMAN Reset, WDT, Basic Timer, Timer-A BİL325  C Ders - 6.
DÖNGÜ İFADELERİ.
Prof. Dr. Eşref ADALI Yrd. Doç. Dr. Şule Gündüz Öğüdücü SürümA
PARALLEL ADDER y0y1y3y0y1y3 s0s1s3s0s1s3 X 4-bits Y 4-bits S 4-bits x0x1x3x0x1x3.
Ders Adı: Sayısal Elektronik
Ders Adı: Sayısal Elektronik
Bilgisayar Yapısı-Genel
CPU Tasarım – 2 Single – Cycle CPU Veriyolu Tasarımı
CPU Tasarım – 3 Single – Cycle CPU Controller Tasarımı
Bölüm 2: Program Denetimi
4. KONTROL VE DÖNGÜ KOMUTLARI
CPU (Merkezi İşlem Ünitesi)
DERS 6 PIC 16F84 PROGRAMLAMA.
BİSA CPU   Proje Danışmanı Yrd.Doç.Dr.Aydoğan Savran   Proje Ekibi Arş.Gör.Özkan Akın.
PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI
Marmara Ünv. Bilgisayar Mühendisliği Bölümü
DERS 6 PIC 16F84 PROGRAMLAMA.
Cpu Nasıl Çalışır?. -A- 2 tuşuna basılması MİB’ini uyarır ve Komut Cache’inde (Instruction Cache) bir şey olmadığından yeni veri üzerinde ilgili komutların.
Bilgisayar Donanımı Öğr. Gör. Tolga HAYIT
Intel P6 Architecture Mustafa Çayır.
DERS 8 PIC 16F84 PROGRAMLAMA.
Temel Bilgisayar Yapısı ve Devreleri
Yıldız Teknik Üniversitesi
HABTEKUS' HABTEKUS'08 3.
Mikroişlemciler ve Mikrobilgisayarlar
DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ
Soru 4.6 Bir sayısal bilgisayar sisteminde seçicilerle oluşturulmuş 32 bitlik 16 yazaçlı veri yolu sistemi var. Her seçici için kaç seçim girişi kullanılır?
İŞLEMCİ MİMARİLERİ – Derya Işık
Bilgisayarlarda Bilgi Saklama Kapı Devreleri Flip-Flop Devreleri
Mikroişlemciler Sayı gösterimleri.
BİL 102 BİLGİSAYAR PROGRAMLAMA
Ders Kodu: EET134 Ders Adı: Sayısal Elektronik Ders Hocası: Assist. Prof. Dr. MUSTAFA İLKAN.
ÖĞR. GRV. Ş.ENGIN ŞAHİN BİLGİ VE İLETİŞİM TEKNOLOJİSİ.
Temel Bilgisayar Yapısı ve Devreleri
LD/LDI LD X0 LDI X0 X0 Y0 X0 Y1 Temel Komutlar
8086 Programlama – Kısım III Prosedürler
VERİLOG HDL Doç. Dr. Mustafa TÜRK.
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler
BİLGİSAYAR MİMARİLERİ 2.Hafta: Bilgisayar Bileşenleri
BİLGİSAYAR MİMARİLERİ 7.Hafta: Çoklu-Çevrim İşlemci
ENDÜSTRİYEL GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ
YAPISAL PROGRAMLAMA KAVRAMI
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BİLGİSAYAR MİMARİLERİ 11.Hafta: Pipeline Sorunları
BİLİŞİM TEKNOLOJİSİNİN TEMELLERİ
BİLGİSAYAR MİMARİLERİ 10.Hafta: Pipeline İşlemci
CPU 1-Bit AMAÇ Bu sunumda 4 yazıcı (register) üzerinde RAM hafızada kayıtlı komut kodlarının belirlediği temel işlemleri yürüten 1 Bit’lik bir CPU tasarımını.
8.8 A Simple Computer Architecture
8086 Programlama – Kısım III Prosedürler
Mikroişlemciler Giriş.
Cpu Nasıl Çalışır?.
Bilgisayar Donanım ve Sistem Yazılımı
Excel’de VBA Programlama (Visual Basic Application)
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
ENDÜSTRİYEL OTOMASYON DERSİ LABORATUVARI ARA PROJE RAPORU
Tolga Ayav, K.Atilla Toker İzmir Yüksek Teknoloji Ensitütüsü
Prof. Dr. Eşref ADALI Doç. Dr. Şule Gündüz Öğüdücü Sürüm-B
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

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

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

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

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

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

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);

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

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))};

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 sonuc[i] = fn[0] ? z[31 - i] : z[i];

Single Cycle IEI-32

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

Pipeline Yapısında IEI-32

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 : 112.425 MHz (Spartan 3 E Starter Kit Speed:-4) Jump Komutları ve Hazard Çözümleri İçin Kontrol Birimi

IEI-32 Komut Yapısı

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

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

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

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

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

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

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

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

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

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

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

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

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

TEŞEKKÜRLER