20 Eylül 2017 Çarşamba

Microsoft Small Basic ile kodlamayla tanışın...

        Kodlama eğitiminin önem kazandığı ve hemen hemen bütün özel okullarda okutulur olduğu bugünlerde bilişim teknolojileri öğretmenleri kodlama araçları ve derleyiciler aramakta en uygun aracı sınıflarında sunmak istemektedir.Kodlama için sınıf seviyesi önemli midir?Bence değildir öğrenci temel düzeyde bilgisayar kullanabiliyorsa seviye farkı çok önemli değildir çünkü "merhaba dünya" etiketinden başlayarak kodlama eğitimi verilmektedir.Yani yazılımın alfabesinden bu işlem başlamaktadır.
      Siz eğitmenlerin kolay bir başlangıç yapabileceği söz dizimli programlama ihtiyacını karşılayacak bir dil ile tanışmanızı istiyorum."Microsoft Small Basic" syntax hatalarını minimuma indirecek kolay yazımı ile ve basit derleyicisiyle sunulan small basic ortaokul düzeyindeki öğrencilerin algoritma ve blok yöntemler ile kodlamayı yaptıktan sonra kolay bir şekilde kod yazabilecekleri bir ortamdır.
       Öğrencilere C veya C++ ile kod yazıyormuş havası veren bu dil geliştirmek isteyenlere ise Java ve C# gibi görsel programlama dillerine geçişini kolaylaştıracaktır.
Şimdi derleyicisinden bahsedelim;
Öncelikle derleyicisini indirmak için tıklayınız 
Kodlama alanı ortadaki beyaz kısımdadır.Bu bölüme kodların ilk harfini yazdığınız anda size yardım kutucuğu çıkıp kod içeriği hakkında bilgilerde sağ tarafta çıkacaktır.


Çalıştır veya F5 tuşuna basarak yazdığınız kodun çalışmasını sağlayabilirsiniz

Örnek kod bloğu;
//Dikdörtgenin alanını bulan bir örnek yapalım.


TextWindow.Show()
kısakenar = 5
uzunkenar = 10
alan=kısakenar * uzunkenar
TextWindow.WriteLine(alan)

Konu ile ilgili sunum yakında eklenecektir...

11 Eylül 2017 Pazartesi

İş Hatları-Pipelining-Pipeline Hazard


Bir komutun işlenmesi kabaca 4 aşamadan oluşur , birincisi komutun bellekten okunması (Fetch) ikincisi komutun çözümlenmesi , (Decode) yani hangi komutun ne anlama geldiğinin anlaşılması , üçüncüsü komutun işletilmesi (Execute) ve son olarakta sonucun geri yazılmasıdır(Retire). 8086 Mikroişlemcisin de işlenen komutlar bu sırayı takip eder , önce komut okunur , ne olduğuna bakılır , gerekli registerler ayarlanır , işlenen işletim ünitesine sokulur ve sonuç alınır. Her komutun işletim süresi bellidir , bazı komutlar 1 saat darbesinde tamamlanırken bazı komutların tamamlanması için onlarca hatta yüzlerce saat darbesi gereklidir.  Mikroişlemci dünyası işhattı(Pipelining)  kavramıyla tanışınca tüm hesaplar alt üst oldu.
Henry ford model t arabalarının üretimini artırmak için ışhattı(assembly line) kavramını ortaya çıkarmıştı , buna göre arabanın üretimi sırasında yapılması gereken tüm işlemler bir bant üzerinde sadece tek bir işle görevlendirilmiş işçilerin çalışmasıyla gerçekleşiyor , bandın başından sonuna gidene kadar araba tamamlanıyordu. mikroişlemcilerde de bir komutun işlenişi çeşitli safhalardan oluştuğuna göre aynı taktiğin işlememesi içinde bir sebep yok. Arka arkaya gelen 10 komut düşünelim k1,k2,k3......k10 olsun. İşhattı (pipeline )olmayan bir sistemde bir k komutunun işlenmemesi için de n adet saat darbesi gereksin,basit bir çarpmayla bu tür bir sistemde bu tür bir komutun işhatsız bir işlemcide işlenmesi için gereken süre 10*n olacaktır. İyi düzenlenmiş bir işhatlı sistemde  de teorik olarak aynı komutun ışlenmesi için geçen süre 2n+10 saat darbesi olacaktır. Birinci komut işhattının ikinci aşamasına geldiği zaman  ikinci komut işhattının birinci aşamasına girer, ıkinci işletilip iş hattından çıktığı zamansa  n numaralı komut iş hattına girmiş  olur. Son komutun işhattından çıkması  da n saat darbesi süre alacağından 2n+10(komut sayısı) sonucu elde edilmiş olur. Eğer yeterince fazla komut işletilecekse x sayıda komutun işletilmesi sadece x saat darbesinde hallediliş olur. yani sanki tüm komutlar 1 saat darbesinde işletiliyormuş gibi davranır. Bu muhteşem bir fikirdi pentium işlemcilerinde 6 kademeli , pentium pro da da 13 kademeli bir işhattını intel işlemcilerine yerleştirdi. İntel pentium pro ve sonraki işlemcilerinin fpu’su (kayan noktalı sayıları işleyen ünite ) iş hatlıdır ve normalde çok uzun sürecek olan virgüllü sayıların çarpma ve toplama gibi işlemlerinin işleniş hızı çok artırılmıştır. amd k6 serisi işlemciler kayan noktalı işlemleri hızla gerçekleştirse de işhatlı olmadığından  kayan noktalı işlemlerde pentium 2-3 serisi işlemcilerden geri kalmaktadır. amd athlonıse pentium’lara göre daha gelişmiş bir fpu ış hattı yapısına sahiptir.  
Ancak işhatlarının işletimi her zaman bu kadar mükemmel yürümüyor. hatta bazen işhattı kullanımının yan etkileri bile olabilir. Gerçek bir programda çoğu zaman birbirine benzeyen komutlar yukarıda anlatıldığı gibi arka arkaya gelmez. Şu durumu düşünelim gene 10 komutumuz olsun ancak 6. komut 2. komutun sonucunu kendisi için kullanmak istiyorsa işletim (execution) aşamasına girmeden önce 2. komutun tamamlanıp sonucunun ortaya çıkmasını beklemek zorundadır. bu bekleme durumuna pipelinestall adı verilir. Tüm program işletimi bu sırada beklemeye alınır ve performans düşer.
İkinci ve daha kötü bir durum ise şartlı dallanma komutlarının işhattına girmesiyle ortaya çıkar. şartlı dallanma komutları iş hattına girdikten sonra eğer işhattına alınan komutlardan farklı bir yere dallanıyorsa dallanma komutundan sonra işhattına alınmış bütün komutların işhattından boşaltılması ve dallanılan yerdeki komutların alınmaya başlaması gerekir. Bu duruma pipeline flush adı verilir ve 2n kadar zamanın boşa harcanmasına sebep olur.
Pentium 2 deki gibi derin bir işhattının sürekli olarak beklemeye uğraması performansa ağır bir darbe indirebilir. İntel 902’larin ortasında çıkardığı pentium pro işlemcisinde bu tür bir sorunla karşılaşmıştı. Pentium pro 32 bitlik  komutlar için optimize edilmişti ve işhattıda buna göre ayarlanmıştı bu yüzden çok gelişmiş mimarisine karşın 16 bitlik uygulamalarda selefi pentium işlemcisinin gerisinde kalmıştı.
Özet olarak 3 çeşit olumsuzluk mevcuttur,bunlar;
-Yapısal olumsuzluklar:donanım eşzamanlı yürütme yaparken tüm olasılıkları kombine edemez ve böylelikle çakışmalar meydana gelebilir.
-Veri olumsuzlukları:Üst üste işlenen veriler eğer bir önceki komutun sonucuna göre işlenecekse çeşitli olumsuzluklar meydana gelebilir.
-Kontrol olumsuzlukları:PC den PC ye donanım değişeceğinden dolayı herhangi bir değişiklik meydana gelmesi durumunda işleyiş(pipeline) olumsuz etkilenir.