Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


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

1 SelCPU Temmuz 2008 Bilg.Bil.Müh.Selçuk BAŞAK SelSistem Bilgi ve İletişim Teknolojileri

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

3 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ı: 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.)

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

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

6 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]

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

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

9 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

10 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

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

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

13 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

14 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

15 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

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

17 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

18 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

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

20 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

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

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

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

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

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

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

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

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

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

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

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

32 Ş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

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

34 SelCPU Assembler

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


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

Benzer bir sunumlar


Google Reklamları