SelCPU Temmuz 2008 Bilg.Bil.Müh.Selçuk BAŞAK selcuk@selsistem.com SelSistem Bilgi ve İletişim Teknolojileri www.selsistem.com.

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
GENEL OLARAK Ana kart Nedir? Ana kartın Yapısı
VHDL Kullanarak FPGA İle Yüksek Kapasİtelİ Tam ÇIkarIcI Devre TasarImI
Bilgi Teknolojisinin Temel Kavramları
CPU Tasarım – 2 Single – Cycle CPU Veriyolu Tasarımı
CPU Tasarım – 3 Single – Cycle CPU Controller Tasarımı
Devre Tahtası Kullanımı
Numbers of Opcodes Nihal Güngör.
MİMARİ ESASLAR Bir bilgisayarın komut kümesi, programcının makineyi programlarken kullanabileceği ilkel emirleri veya makine komutlarının tamamının oluşturduğu.
7. Wheatstone Köprüsü: V1: Besleme gerilimi, V2: Ölçülen gerilim + -
SOME-Bus Mimarisi Üzerinde Mesaj Geçişi Protokolünün Başarımını Artırmaya Yönelik Bir Algoritma Çiğdem İNAN, M. Fatih AKAY Çukurova Üniversitesi Bilgisayar.
Eczane Sadakat Kart Sistemi
CPU (Merkezi İşlem Ünitesi)
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
CEIT 101 Teorik Vasfi Tuğun - Konu 2 -.
BİSA CPU   Proje Danışmanı Yrd.Doç.Dr.Aydoğan Savran   Proje Ekibi Arş.Gör.Özkan Akın.
BUYRUK İşlem kodu İşlemci yazacı veri
Intel Pentium II Mikroişlemcisi
Marmara Ünv. Bilgisayar Mühendisliği Bölümü
DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI
Bilgisayar Donanımı Öğr. Gör. Tolga HAYIT
Register ve Türleri Nihal GÜNGÖR.
Intel P6 Architecture Mustafa Çayır.
Temel Bilgisayar Yapısı ve Devreleri
66 CHAPTER SİSTEM UNITESİ. © 2005 The McGraw-Hill Companies, Inc. All Rights Reserved. 6-2 Sistem Üniteleri Mikro bilgisayarlar Masaüstü Dizüstü Tablet.
BİLGİSAYARIN MİMARİSİ, TEMEL BİLEŞENLERİ VE ÇALIŞMA MANTIĞI
Mikroişlemciler ve Assembler Programlama
Mikroişlemciler ve Mikrobilgisayarlar
DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ
DERS 5 PIC 16F84 PROGRAMLAMA.
Microsoft Visual Studio 2010 Kurulum & Tanıtım
DEPOLAMA (KAPASİTE) ÖLÇÜLERİ
Ders 2 Donanım Birimleri.
Cemil ŞAHİN Bilişim Teknolojileri Öğretmeni
BLM619 Bilgisayar Ağları ve Uygulamaları
İŞLEMCİ MİMARİLERİ – Derya Işık
Bilişim Teknolojileri Öğretmeni İsmail ÖZTÜRK
DEPOLAMA.
Dijital Ölçütler.
Aşağıdakilerden hangisi işletim sistemi değildir?
Temel Bilgisayar Yapısı ve Devreleri
Bilgi Teknolojisinin Temel Kavramları
BİL 322 Programlanabilir Sayısal Sistemler LCD ile Uygulama Geliştirme.
BİLGİSAYAR MİMARİLERİ 4.Hafta: Bellek Hiyerarşisi-2
BİLGİSAYAR MİMARİLERİ 2.Hafta: Bilgisayar Bileşenleri
BİLGİSAYAR MİMARİLERİ 7.Hafta: Çoklu-Çevrim İşlemci
BİLGİSAYAR MİMARİLERİ 11.Hafta: Pipeline Sorunları
BİLİŞİM TEKNOLOJİSİNİN TEMELLERİ
Information Technology, the Internet, and You © 2013 The McGraw-Hill Companies, Inc. All rights reserved.Computing Essentials 2013.
Bilgisayar Donanımı Dersi
Sayısal Entegre Devreler
KURTKÖY TİCARET MESLEK LİSESİ EĞİTİM ÖĞRETİM YILI
Giri ş 1 Mikroişlemciler. İçerik 2 Tarihi geli ş im Tanımlar Mikroi ş lemci tabanlı sistemler Sayı sistemleri.
IPv6.
Bilgisayar Donanımı Dersi
DERS 5 PIC 16F84 PROGRAMLAMA.
Mikrobilgisayar Tasarım Yapıları
8.8 A Simple Computer Architecture
MALTEPE ÜNİVERSİTESİ Paralel Hesaplama MATLAB ve Paralel Hesaplama
Mikroişlemciler Adresleme Modları.
Bilgisayar Donanım ve Sistem Yazılımı
Mikroişlemciler Giriş.
Mikroişlemcili Sistem Tasarımı
İşletim Sistemleri (Operating Systems)
Mikrobilgisayar Tasarım Yapıları
İşletim Sistemleri (Operating Systems)
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
Sunum transkripti:

SelCPU Temmuz 2008 Bilg.Bil.Müh.Selçuk BAŞAK selcuk@selsistem.com SelSistem Bilgi ve İletişim Teknolojileri www.selsistem.com

SelCPU? SelCPU CPU-Turkey yarışması için tasarlanmış bir bilgisayar merkezi işlemci ünitesidir. Tasarlanan SelCPU işlemcisi Xilinx FPGA platformu üzerinde ISE Foundation kullanılarak verilog ile gerçeklenmiştir. SelCPU ve çevre birimleri ile SelSistem adında bir bilgisayar sistemi oluşturulmuştur.

SelCPU : Özgün bir tasarım. İşlemci özgün bir tasarıma sahiptir. MIPS veya diğer RISC işlemcilerin tasarımları örnek veya temel alınmamıştır. Özgün özelliklerinden bazıları: 8-16-32 bit immediate değerin komutlarda kullanılabilmesi immediate değer 16 bit signed limitini aşmıyorsa komut uzunluğunun 32 bit, yoksa 64 bit olması.16 bit’ten küçük immediate değerlerde sign extend yapılması Immediate fetch optimizasyonu (immediate değer yok ise direk execute aşamasına geçilmesi) Pre-Fetch: Komut execute aşamasında iken bir sonraki komutun hafızadan okumaya hazırlanması. (hafıza erişimi yapan komutlar dışında) Pre-Fetch yapılabilmesi için hafıza ile cpu clokları arasında faz farkı olması Pre-fetch mantığında bağımlılık problemi olmaması. (Pipeline’a göre avantajı hazard control logic’e gerek yok.)

SelCPU : Özgün bir tasarım. Özgün özelliklerinden bazıları-2: Branch optimization : Pre-Fetch’in conditional branch komutlarında karar aşamasında belirlenen bir adresteki komutu otomatik olarak komut okumaya hazırlaması. (Branch Prediction’dan ileri olarak her zaman seçilecek adresteki komutun okunması sağlanır.) Syscall ve iret dışında tüm komutların (bl:branch&link dahil) 2 cycle’ da, Fetch ve Execute olarak çalıştırılması. Komutta immediate 32 bit değer varsa Fetch aşaması iki cycle da çalışır. External Interruptların, gerçeklenmesinin syscall instuction’ın IR register’ına “syscall #int_src “ şeklinde yüklenerek sade bir şekilde yapılması.

SelCPU :Temel Özellikler İşlemci komut setine göre RISC mimarisindedir. Ancak branch komutları oldukça geniştir. Signed ve unsigned sayılara göre karşılaştırmalar farklı komutlar ile desteklenmekte ve tüm flaglara göre branch yapılabilmektedir. İşlemcide branch ve carry ayrı flaglar olarak tutulmuş böylece aynı anda iki ayrı koşul kontrolü de yapmaya imkan sağlanabilmektedir.

SelCPU :Temel Özellikleri Kelime uzunluğu(word length):32 Bit Hafıza Adreslemesi: 32 bit. 4G Word = 16 GB Hafıza destekler.(Adresleme 32 bit alinged olarak yapılır.) Komutlarında bir seferde bir,iki veya üç adresleme yapılabilir . Üç adresleme yapabilmesi ile aynı işlemi daha az komut ile yapabilir. Örneğin: add r1,r2,r3 ; r1<= r2+ r3 lw r1,[r2+r3] ; r1<= RAM[r2+r3]

SelCPU :Temel Özellikleri R1-R7,BP,BR olmak üzere 9 genel amaçlı 32 bit register’a sahiptir. SP,PC,IR,IM32,R0,RNEG1,PSW olarak 7 özel amaçlı register’a sahiptir. Control için Hardwired logic control kullanıldı. Hafızada Stack Yapısı destekler. SP register’ı stack için kullanılır. Stack yapısında bir boyut ve konum açısında bir kısıtlama yoktur. Stack aşağıya doğru ilerler (push işlemi ile azalan adrese doğru ilerler)

SelCPU :Temel Özellikleri 32 bit immediate destekler. 32 bit immediate, Sabit değer atamalarında büyük kolaylık ve hız sağlar. Compiler’da pointer atamalarında optimizasyonu sağlayabilir.(pointer to pointer yerine direk pointer). Geniş I/O desteği vardır. I/O memory mapped olarak yapılır. I/O adres alanı çok geniş kullanılabilir. 16 adet external ve 240 adet sistem olmak üzere 256 adet interrupt servisi destekler.

SelCPU:Temel Özellikleri Adresleme modları: Implied: mul r3,r4 ; {r2,r1} <= r3* r4 Register: mov r2,r1 ; r2 <= r1 Register Indirect: lw r2,[r1] ; r2 <= RAM[r1] Immediate(Direct) : mov r2,1234 ; r2<=1234 Indexed Register Adress Mode: lw r2,[r1+5] ; r2 <= RAM[r1+5] Base Register Address: lw r2,[br+r1] ; r2 <= RAM[br+r1] Relative Address (only for brunch): bra rel_pos ; pc <= pc + rel_pos

SelCPU:Mimari Blok Şeması EXTERNAL DATABUS Data Out Memory Address MUX LOCAL DATABUS Data In LOCAL DATABUS INTERNAL BUS A INTERNAL BUS B INTERNAL BUS C INTERNAL BUS D MUX PC R0 MUX U ADDRESS ADDER R1 MUX R2 . Hardwired Control Logic R7 U PC ADDER BR BP SP U ALU MUX IR IM32 Interrupt Handler Sign Extend RNEG1 PSW

SelCPU:Tasarım Detayları SelCPU komutları fetch ve execute olarak iki aşamada çalışırtır. Immediate 32 değerli komutlar ve syscall,iret dışında tüm komutlar 2 cycle’da çalışır. Bu şekilde çalışmayı sağlamak için sistemde işlemci ile hafıza clokları arasında faz farkı oluşturulur. SelCPU’da execution aşamasında bir sonraki komut pre-fetch yapıldığından çoğu komut tek cycle’da sonuçlanır. İşlemci Xilinx Spartan3E FPGA üzerinde 25 Mhz de gerçeklendi. Bu frekansta maksimum 25MIPS kapasitesine sahiptir.

SelCPU:Tasarım Detayları İşlemcinin önceki sürümlerinde Fetch ,Execute aynı anda çalıştırılmamıştı. Bu sürümlere göre performansı %100’e yakın arttı. Demo asal sayı bulma programı, işlemcide pre-fetch yok iken aynı frekans ta 10 dk’da 56000’e gelirken aynı sayılara pre-fetch ile 5:20 gibi bir zamanda erişildi. Pre-Fetch execution çalışması , veri transfer zamanlamasın özel yapısından ve işlemcinin içerisinde kullanılan paralel veri yolları ve adres hesaplamasından yararlanılarak yapılıyor.

SelCPU:Örnek Komut Çalışması: MOV R1,R2 Memory PC R0 R1 R2 R7 BR BP SP IR IM32 PSW RNEG1 . MUX Address Data In Sign Extend U ADDRESS ADDER PC ADDER ALU Interrupt Handler INTERNAL BUS A INTERNAL BUS B INTERNAL BUS D INTERNAL BUS C LOCAL DATABUS EXTERNAL DATABUS Data Out Hardwired Control Logic Pre-Fetch LOCAL DATABUS LOCAL DATABUS R1 Hardwired Control Logic IR

SelCPU:Örnek Komut Çalışması: ADD R1,R2,R7 Memory PC R0 R1 R2 R7 BR BP SP IR IM32 PSW RNEG1 . MUX Address Data In Sign Extend U ADDRESS ADDER PC ADDER ALU Interrupt Handler INTERNAL BUS A INTERNAL BUS B INTERNAL BUS D INTERNAL BUS C LOCAL DATABUS EXTERNAL DATABUS Data Out Hardwired Control Logic Pre-Fetch LOCAL DATABUS LOCAL DATABUS INTERNAL BUS A INTERNAL BUS B R1 Hardwired Control Logic IR

SelCPU:Örnek Komut Çalışması: MULI R2,1234 Memory PC R0 R1 R2 R7 BR BP SP IR IM32 PSW RNEG1 . MUX Address Data In Sign Extend U ADDRESS ADDER PC ADDER ALU Interrupt Handler INTERNAL BUS A INTERNAL BUS B INTERNAL BUS D INTERNAL BUS C LOCAL DATABUS EXTERNAL DATABUS Data Out Hardwired Control Logic Pre-Fetch INTERNAL BUS A INTERNAL BUS B R1 R2 Hardwired Control Logic IR IM32

SelCPU:Tasarım Detayları SelCPU, sade ve paralel çalışacak bir tasarıma sahiptir. Örnek komutun çalışmasında da görüldüğü gibi işlemcideki komut ALU üzerinde çalışıyorken ise , aynı anda bir sonraki komut pre-fetch işlemi yapılabilmektedir. Internal buslar ile bl,push gibi karmaşık komutlarında tek cyclda çalıştırılması , pre-fetch ve branch optimization sağlanmıştır.

SelCPU:Örnek Komut Çalışması: SW R1,[BR+R2] Memory PC R0 R1 R2 R7 BR BP SP IR IM32 PSW RNEG1 . MUX Address Data In Sign Extend U ADDRESS ADDER PC ADDER ALU Interrupt Handler INTERNAL BUS A INTERNAL BUS B INTERNAL BUS D INTERNAL BUS C LOCAL DATABUS EXTERNAL DATABUS Data Out Hardwired Control Logic EXTERNAL DATABUS Hafıza erişimi olduğundan Pre-Fetch yok INTERNAL BUS A INTERNAL BUS B Hardwired Control Logic IR

SelCPU:Örnek Komut Çalışması: BRA target Memory PC R0 R1 R2 R7 BR BP SP IR IM32 PSW RNEG1 . MUX Address Data In Sign Extend U ADDRESS ADDER PC ADDER ALU Interrupt Handler INTERNAL BUS A INTERNAL BUS B INTERNAL BUS D INTERNAL BUS C LOCAL DATABUS EXTERNAL DATABUS Data Out Hardwired Control Logic Pre-Fetch INTERNAL BUS A INTERNAL BUS B INTERNAL BUS C INTERNAL BUS D PC Hardwired Control Logic IR IM32

SelCPU:Tasarım Detayları Branch optimization vardır. Branch prediction’dan farklı olarak, branch’a instructionda karar adresteki verilen komut pre-fetch yapılır. Yani daha PC güncellenmeden komut IR’e yüklemeye hazır hale getirilir. PC’ye de bir sonraki komut adresi atanır.

SelCPU:Örnek Komut Çalışması: BREQ target Memory PC R0 R1 R2 R7 BR BP SP IR IM32 PSW RNEG1 . MUX Address Data In Sign Extend U ADDRESS ADDER PC ADDER ALU Interrupt Handler INTERNAL BUS A INTERNAL BUS B INTERNAL BUS D INTERNAL BUS C LOCAL DATABUS EXTERNAL DATABUS Data Out Hardwired Control Logic Pre-Fetch PC Hardwired Control Logic IR IM32

SelCPU:Tasarım Detayları Pre-Fetch için eğer komut hafıza erişimi yapmıyor ise boşta kalan adres hesaplama modülü devreye alınıyor ve bir sonraki komut hafızadan seçiliyor ve bu komut IR’a işlemcinin bir sonraki clock vuruşunda aktarılıyor. Böylece bir sonraki cycle da işlenecek komut IR aktarılmak üzere hazır bulunuyor. Bunu gerçekleştirmek için işlemci ile memory ve diğer çevre birimlerin kullanmış olduğu clock vuruşları arasında bir faz farkı oluşturuluyor.

SelCPU:Tasarım Detayları FPGA üzerinde 180 derecelik faz farkı logic olarak yapılabilir. Diğer faz farkları için FPGA üzerindeki DCM kullanılarak yapılabiliyor. SelCPU’da DCM kullanarak 27 ns bir geçikme oluşturuldu. Böylece eğer komut branch ise adress hesaplaması bittiğinde hafızadan okunabiliyor. Branch prediction da bu şekilde yapılmış oluyor ve branch sonucu ne olursa olsun performansı etkilemiyor.

SelCPU:Tasarım Detayları Veri Transfer Zamanlaması Veri transferleri ise pozitif (mavi) geçişte yapılmaktadır. Ancak Memory ile CPU arasında faz farkı vardır. Böylece işlem sonuçlandığında aynı cyle’da hafızaya yazılabilmekte,okunabilmektedir.

SelCPU:Tasarım Detayları İşlemcinin diğer bir özelliği ise sadece 32-bit (word) boyutundaki değerler ile işlem yapmaktadır. 8/16 bit için direk işlem desteği ve hafıza erişimi yoktur. Bu sayede hafıza erişim performansının daha hızlı olacağı düşünülmektedir.(Intelx86 platformundan bildiğiniz gibi 32bit aligned olmayan değerlerin okunması çok daha düşük performansa yol açıyor) Bunun dez avantajı ise hafızanın verimsiz kullanılması. Ancak günümüzde hafızalar oldukça ucuz.

SelCPU:Tasarım Detayları SelCPU komut formatı ile de sade bir yapıya sahiptir. Komut [RD],[RS,[RX|Immediate]] Komutlarda: 3 register, 2 register + 16bit Immediate 2 register + 32bit Immediate, 2 register, Immediate 1 register no address Kullanılabilir.

SelCPU:Tasarım Detayları İşlemcinin control ünitesi hardwired logic kontrol olarak tasarlandı. İşlemcinin kontrolü 8 durumlu bir FSM ile yönetildi. State 0: fetch intruction State 1: immediate32 varsa “fetch im32” yoksa “Execute” State 2: Execute State 3: syscall(execute 2/3), iret (execute 2/2) State 4: syscall(execute3/3) State 5: Interrupt Handling State State 6: Halt State State 7: Reset State Execute, immediate32 değer yoksa state1,varsa state2 durumunda gerçekleşir . Execute durumunda (s1 veya s2 de) eğer komut hafıza erişimi yapmıyor ise pre-fetch yapılır.

SelCPU:Tasarım Detayları İşlemci de birbirine paralel toplam 6 veri yolu kullanıldı. Bunun nedeni bir çok işlemin aynı anya yapılabilmesi örneğin bl(branch & link) komutu çalıştırılırken hem PC’nin değişmesi hemde eski PC’nin stack’a push edilmesi gerekiyor. Bunu tek adımda yapabilmek için ayrı veri yolları kullanıldı.

SelCPU:Tasarım Detayları İşlemcide internal bus’lar, kaynak operandları seçmek için ve adres hesaplamasında kullanıldı. Local databus, ALU işlem sonuçlarını aktarmak, hafızadan okuma ve transfer işlemleri için kullanıldı. External databus hafızaya yazan komutlar için kullanıldı. External ve Local databuslar ayrı tutulmasının nedeni, ALU sonuçlarının hafızaya yazılmayacak olması ve iki memory arası transfer işleminin olmaması. Eğer ortak kullanılırsa sentezleme sırasında timing analiz sonucunda ALU çıktısını hafızaya yazılacağını sanıp en uzun yol olarak gösteriyor hatalı sentezleme yapabiliyordu.

SelCPU:Tasarım Detayları Tasarımda işlemcinin daha yüksek frekansta çalışılabilmesi için bazı optimizasyonlar da yapıldı. En uzun zaman alan “mul” işlemlerinin sonucu implied olarak direk R2,R1’e atanıyor. Böylece databus gecikmesi önleniyor. PC ve IR girişleri external bus yerine direk cpu data_in’e bağlanıyor böylece özellikle pre-fetch için geçikme optimizasyonu sağlandı.

SelCPU SelCPU taslak çalışamalarından sonra komut formatı, control logic tasarlandıktan sonra Verilog ile ISE Foundation kullanılarak tasarlandı. Simulasyon için ModelSim kullanıldı. Sistem Xilinx Spartan3E Starter Kit üzerinde gerçeklendi.

SelSistem:Embeded System SelCPU’nun gerçek kullanımını sağlamak için RAM,ROM’un yanında çeşitli çevre birimlerininde olması gerekiyordu. Starter Kit’te bulunan LCD,LED,P/S2,RS232,VGA ve tuşlar için interfaceler,kontrollerlar tasarlandı. Ayrıca Interrupt Kontroller ve Timer tasarlandı ve “SelSistem” adı verilen sistem geliştirildi.

Şekil -1 : SelSistem Mimarisi Spartan 3E Starter Kit Board Xilinx Spartan 3E FPGA LCD PANEL LED SelCPU PS/2 Keyboard Kontroller Interrupt Kontroller LED Kontroller LCD Kontroller Timer DATA BUS PS/2 Port RAM VGA Kontroller VGA Port ROM Şekil -1 : SelSistem Mimarisi Button Interface RS/232 Kontroller RS/232 BTN

SelCPU Assembler SelCPU için program geliştirmek için geliştirmiş olduğum cross-compiler ile yapılmaktadır. SelCPU RS232 portu ile veri iletişimi yapabilmekte ve buşekilde hafızasına program da yüklenebilmektedir. Assembler aracı RS232 ile program yükleme özelliğine de sahiptir.

SelCPU Assembler

Son olarak: Niye bir işlemci tasarlarsınız? Gerçek Hayatta: Bir alanda bağımsız bir ürün geliştirmek veya yenilikçi bir tasarım yapmak vs. Konumuz ile ilgili cevap: Yarışma için. Benim Cevabım: Bir sadece ünvan olarak değil, gerçekten bir “Bilgisayar Mühendisi” olduğumu hissetmek için ve işlemci tasarlamak yapmak isteyip te henüz yapmamış olduğum mesleki bir konu olduğundan. İstanbul Atatürk Fen Lisesi birinci sınıfta almış olduğumuz bilgisayar dersinde lojik kapılar ile ALU tasarlamayı görünce kesin Bilgisayar Mühendisi olamaya kesin karar vermiştim. Üniversitede Bilgisayar mimarisi dersini okuduğumuzda da bir işlemci tasarlamayı düşünmüştüm. O zamanlar komut formatı ve micro code ile işlemci tasarlamak çok hoşuma gitmişti. Ama gerçekleştirecek fırsat olmamıştı. Yani bu benim zevkim,hayatım, mesleğimin bir parçası! Bu arada bu projeden de çok büyük haz aldığımı ifade etmek isterim. Yarışmaya vesile olanlara tekrar teşekkür ederim.