Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


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

1 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: addr1,r2,r3; r1<= r2+ r3 lwr1,[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: mulr3,r4 ; {r2,r1} <= r3* r4 Register: movr2,r1; r2 <= r1 Register Indirect: lwr2,[r1]; r2 <= RAM[r1] Immediate(Direct) : mov r2,1234 ;r2<=1234 Indexed Register Adress Mode: lwr2,[r1+5]; r2 <= RAM[r1+5] Base Register Address: lwr2,[br+r1]; r2 <= RAM[br+r1] Relative Address (only for brunch): brarel_pos; pc <= pc + rel_pos

10 SelCPU:Mimari Blok Şeması Memory MUX Address Data In Sign Extend U ADDRESS ADDER U PC ADDER U ALU Interrupt Handler INTERNAL BUS A INTERNAL BUS B INTERNAL BUS D INTERNAL BUS C LOCAL DATABUS EXTERNAL DATABUS LOCAL DATABUS Data Out Hardwired Control Logic

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 Hardwired Control Logic Pre-Fetch LOCAL DATABUS

14 SelCPU: Örnek Komut Çalışması: ADD R1,R2,R7 Hardwired Control Logic Pre-Fetch INTERNAL BUS B INTERNAL BUS A LOCAL DATABUS

15 SelCPU: Örnek Komut Çalışması: MULI R2,1234 Hardwired Control Logic Pre-Fetch INTERNAL BUS B INTERNAL BUS A

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] Hardwired Control Logic Hafıza erişimi olduğundan Pre-Fetch yok INTERNAL BUS B INTERNAL BUS A EXTERNAL DATABUS

18 SelCPU: Örnek Komut Çalışması: BRA target Hardwired Control Logic Pre-Fetch INTERNAL BUS B INTERNAL BUS A INTERNAL BUS D INTERNAL BUS C

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 Hardwired Control Logic Pre-Fetch

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


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

Benzer bir sunumlar


Google Reklamları