1 / 35

SelCPU

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.

christmas
Download Presentation

SelCPU

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. SelCPU Temmuz 2008 Bilg.Bil.Müh.Selçuk BAŞAKselcuk@selsistem.comSelSistem Bilgi ve İletişim Teknolojileri www.selsistem.com

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

  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 MUX Address LOCAL DATABUS Data In LOCAL DATABUS INTERNAL BUS A INTERNAL BUS B INTERNAL BUS C INTERNAL BUS D MUX PC R0 MUX R1 U U U MUX PCADDER ADDRESSADDER R2 ALU . . . HardwiredControlLogic R7 BR BP SP MUX IR IM32 Sign Extend InterruptHandler 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 EXTERNAL DATABUS Data Out Pre-Fetch Memory Address MUX LOCAL DATABUS LOCAL DATABUS Data In LOCAL DATABUS LOCAL DATABUS INTERNAL BUS A INTERNAL BUS B INTERNAL BUS C INTERNAL BUS D MUX PC R0 MUX R1 R1 U U U MUX PCADDER R2 ADDRESSADDER ALU HardwiredControlLogic HardwiredControlLogic . . . R7 BR BP SP MUX IR IR IM32 InterruptHandler Sign Extend RNEG1 PSW

  14. SelCPU:Örnek Komut Çalışması: ADD R1,R2,R7 EXTERNAL DATABUS Data Out Pre-Fetch Memory Address MUX LOCAL DATABUS LOCAL DATABUS Data In LOCAL DATABUS LOCAL DATABUS INTERNAL BUS A INTERNAL BUS A INTERNAL BUS B INTERNAL BUS B INTERNAL BUS C INTERNAL BUS D MUX PC R0 MUX R1 R1 U U U MUX PCADDER R2 ADDRESSADDER ALU HardwiredControlLogic HardwiredControlLogic . . . R7 BR BP SP MUX IR IR IM32 InterruptHandler Sign Extend RNEG1 PSW

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

  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] EXTERNAL DATABUS EXTERNAL DATABUS Hafıza erişimi olduğundan Pre-Fetch yok Data Out Memory Address MUX LOCAL DATABUS Data In LOCAL DATABUS INTERNAL BUS A INTERNAL BUS A INTERNAL BUS B INTERNAL BUS B INTERNAL BUS C INTERNAL BUS D MUX PC R0 MUX R1 U U U MUX PCADDER R2 ADDRESSADDER ALU HardwiredControlLogic HardwiredControlLogic . . . R7 BR BP SP MUX IR IR IM32 InterruptHandler Sign Extend RNEG1 PSW

  18. SelCPU:Örnek Komut Çalışması: BRA target EXTERNAL DATABUS Data Out Pre-Fetch Memory Address MUX LOCAL DATABUS Data In LOCAL DATABUS INTERNAL BUS A INTERNAL BUS A INTERNAL BUS B INTERNAL BUS B INTERNAL BUS C INTERNAL BUS C INTERNAL BUS D INTERNAL BUS D MUX PC PC R0 MUX R1 U U U MUX PCADDER R2 ADDRESSADDER ALU HardwiredControlLogic HardwiredControlLogic . . . R7 BR BP SP MUX IR IR IM32 IM32 InterruptHandler Sign Extend RNEG1 PSW

  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 EXTERNAL DATABUS Data Out Pre-Fetch Memory Address MUX LOCAL DATABUS Data In LOCAL DATABUS INTERNAL BUS A INTERNAL BUS B INTERNAL BUS C INTERNAL BUS D MUX PC PC R0 MUX R1 U U U MUX PCADDER R2 ADDRESSADDER ALU HardwiredControlLogic HardwiredControlLogic . . . R7 BR BP SP MUX IR IR IM32 IM32 InterruptHandler Sign Extend RNEG1 PSW

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

  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.

More Related