İçeriğe atla

Mikroişlemcilerde kural dışı durumlar

Mikroişlemcilerde kural dışı durumlar, programların çalıştırılması esnasında verilen komutlar neticesinde oluşan hatalardır. Bu hatalar nedeniyle program istenilen şekilde çalışmaz. Hatta işlemcinin kilitlenmesine bile sebep olabilir. Bu tür durumlar normal bir işleyiş olmadığından kural dışı durum oluşturur.[1]

Kural dışı durumlar çeşitli şekillerde sınıflandırılabilir. En önemli iki sınıflandırmada ise;

  • birincisi kural dışı duruma ne zaman yakalandığı ya da yakalandıktan sonra ne yapılacağına göre sınıflandırılması,
    • Ne zaman yakalandığı ya da yakalanınca ne yapılacağına göre sınıflandırmasına bakarsak bu sınıflandırma kendi içinde üçe ayrılmaktadır: Hatalar (fault), tuzaklar (trap) ve iptaller (abort).
      • Hatalar genellikle bellek adresleri ile ilgili durumlarda ortaya çıkarlar. Hatalar işlemci komutu çalıştırmadan önce tespit edilir. Hataya sebep olan komut hata ile ilgili yordam çalıştırıldıktan tekrar çalıştırılır. Bu şekilde olmasının sebebi hataların genellikle adreslerdeki yanlışlıklardan olması, hataların komut çalıştırılmadan tespit edilmesi ve hataların işletim sistemi tarafından kolayca çözülebilmesidir.
      • Tuzaklar ise programcılar tarafından yaptırılan kural dışı durumlardır. Burada amaç bazı kural dışı durumların yardımı ile örneğin sonsuz döngülerden dışarı çıkmaktır. Ayrıca kural dışı durumların çözümünde kullanılan yordamlar programcılar tarafından da değiştirilebildiğinden dolayı bir programlama hilesi olarak da tuzaklar kullanılmaktadır.
      • İptaller de komutlardaki işlemler ile ilgili kural dışı durumlardır. Adından da anlaşılacağı gibi bir iptal tipi kural dışı durum gerçekleştiğinde sorun çözülmeye çalışılmaz program durdurulur. İptallere en büyük örnek sıfıra bölme hatasıdır.
  • ikincisi ise kural dışı durumun adreslerden ya da içeriğinden kaynaklı olmasına göre sınıflandırılmasıdır.
    • Diğer önemli sınıflandırma ise kural dışı durumun kaynaklandığı yerdir. Bu yerler temel olarak ya adrestir ya da komut içerisindeki işlemdeki yanlıştır. Adreslerdeki yanlışlar işlemciye getirilecek buyruğun adresinde ya da işlenenlerin adresinde olabilir. Bu tür kural dışı durumlar komut çalıştırılmadan anlaşılabileceği için işlemci adresler üzerinde kontroller yapar ve böylece bu tür kural dışı durumlar çözülmüştür. Adreslerle ilgili hataların takibi için her buyruğa iki bit bağlanır ve bu iki bitte hatanın tipi belirtilir. Hata komut işlemcide iken herhangi bir aşamada değerlendirilebilir. Durma noktası hatasında hata ile ilgili yordam çağırılmadan önce yazmaçların değerlerini döndüren bir mikroprogram çalıştırılır. Adreslerle ilgili kural dışı durumlar haricinde ayrıca buruktaki işlemle ilgili kural dışı durumlar oluşabilir. Bunlar genelde iptal hatası olup buyruğun bulunduğu program durdurularak hata çözülür. Adresler ile ilgili üç adet test yapılır. Bu testler;
      • limit testi,
        • Limit testi bölünmüş bellekler bulunan (segmenteted memory) bilgisayarlarda anlamlıdır. komut adresinin bölümün dışına çıkıp çıkmadığının yani kendi adres alanının dışına erişip erişmediğinin testidir. Adresin tabanına bölüm büyüklüğü eklenerek üst sınır bulunur ve sonra komut adresinin bu aralıkta olup olmadığı kontrol edilir.
      • sayfa hatası testi
        • Sayfa hatası testi sanal bellek kullanıldığında işlemcinin işaret ettiği adres işletim sistemi tarafından buyruğun bulunduğu sayfanın fiziksel belleğe getirilmemiş olup olmadığının testidir. İşletim sistemi bu durumda sanal bellekten sayfayı fiziksel belleğe getirir ve komut yeniden çalıştırılır.
      • durma noktası (breakpoint) testidir.
        • Durma noktası testi ise eğer program üzerinde hata ayıklanma (debugging) yapılıyorsa yazmaçların durumlarının hata ayıklayan programa bildirilmesi için yapılan testtir. Yukarıda komutlar için anlatılan adres testleri aynı zamanda işlenenlere ait adreslerin testi içinde geçerlidir.

Kural dışı durumların işlenmesi

Kural dışı bu durumların işlemcinin düzgün şekilde çalışabilmesi için ayıklanması ya da düzeltilmesi gereklidir. Kural dışı durumlar karşısında işlemci kesmeleri yönettiği gibi bir uygulama izlemektedir. Bir kural dışı durum oluştuğunda;

  1. İşlemcinin durumu saklanır.
  2. Kural dışı durumla ilgili kesme vektörüne atlanır.
  3. Kural dışı durumun çözümünü sağlayacak olan yordamın adresi alınır.
  4. Yordamın adresine gidilerek kural dışı durumun çözümü ile ilgili işlemler yapılır.
  5. Yordam tamamlandığında, duruma göre işlemci kaldığı yerden devam edilir ya da programı sonlandırılır.

Önemli bazı kural dışı durumlar

  1. Sıfıra bölme (INT 0): en iyi yöntem programı durdurmak
  2. İzleme (trace) (INT 1): hata ayıklayıcılar tarafından her seferinden tek komut çalıştırılması için kullanılır.
  3. Durma noktası(breakpoint) (INT 3): hata ayıklayıcılar tarafından kullanılır. Yazmaçların durumunu görmek için kullanılır
  4. Taşma (INT 4/INTO): aritmetik işlemlerde taşma olduğunda tetiklenir.
  5. Sınır (INT 5): yazmaç belirtilen sınırlar dışında ise oluşur
  6. Hatalı İşlem Kodu (INT 6): 80286lardan itibaren işlem kodu x86 komut kümesinde değilse tetiklenir.
  7. Yardımcı İşlemci Ulaşılamaz (INT 7): 80286lardan itibaren yardımcı işlemci (coprocessor) ulaşılamaz ise tetiklenir.

Kural dışı durumların çözümünde kullanılan yordamlar programcılar tarafından kesme vektörlerindeki adresler değiştirilerek kişiselleştirilebilir. Ayrıca yeni kural dışı durum tanımları eklenebilir. Bunun için yöntem kesmelerin kişiselleştirilmesindekinin aynısıdır.[1]

Kaynakça

  1. ^ a b "Divide Error Exception". phatcode. 5 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2013. 

İlgili Araştırma Makaleleri

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

Bellek bilgisayarı oluşturan 3 ana bileşenden biridir.. İşlemcinin çalıştırdığı programı, lar ve programa ait bilgiler bellek üzerinde saklanır. Bellek geçici bir depolama alanıdır. Bellek üzerindeki bilgiler güç kesildiği anda kaybolurlar. Bu nedenle bilgisayarlarda programları daha uzun süreli ve kalıcı olarak saklamak için farklı birimler mevcuttur.

Boru hattı yöntemi bilgisayar mimarisi ve diğer sayısal ürünlerin tasarımında başarımı artırmak için uygulanan bir yöntemdir. Komutları, boru hattı yöntemi ile işleyip daha kısa süre içinde bitmesini sağlar. Asıl amacı saat sıklığını artırarak başarımı artırmaktır. Farklı kaynakları aynı anda, farklı işler tarafından kullanarak çalışır.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

Yazmaçların yeniden adlandırılması, işlemcilerde, yürütülen buyruklardaki, aynı yazmaçların tekrar kullanımından doğan sahte bağımlılıkları gidermek için kullanılan bir yöntemdir.

Sanal bellek, fiziksel belleğin görünürdeki miktarını arttırarak uygulama programına (izlence) fiziksel belleğin boyutundan bağımsız ve sürekli bellek alanı sağlayan bilgisayar tekniğidir. Ana belleğin, diskin (ikincil saklama) önbelleği (cache) gibi davranmasıyla; yani disk yüzeyini belleğin bir uzantısıymış gibi kullanmasıyla gerçekleştirilir. Ancak gerçekte, yalnızca o anda ihtiyaç duyulan veri tekerden ana belleğe aktarılıyor olabilir. Günümüzde genel amaçlı bilgisayarların işletim sistemleri çoklu ortam uygulamaları, kelime işlemcileri, tablolama uygulamaları gibi sıradan uygulamalar için sanal bellek yöntemi kullanılmaktadır.

Sayfalama ya da bellek adresleme, durgun sanal bellek sayfalarının ikincil bellekte (teker) saklanarak daha sonra ihtiyaç duyulduğunda ana belleğe yüklenmesi işlemini içerir. Bir diğer anlamı, adres uzayının belli oranlarda bloklara ayrılmasıdır. Sayfalama, bellek mahallerine ulaşımı ve adreslemeyi kolaylaştırır. 6502 mikroişlemcili bir sistemde 65536'lık adres uzayı 256 adet 256 Baytlık hayalı sayfalara ayrılır. Genelde 6502 işlemcili sitemlerde 1. sayfa yığın olarak ayrılırken 0. sayfaya bakış tabloları veya veri blokları yerleştirilir.

<span class="mw-page-title-main">Etkin sayfalar ön belleği</span> Bilgisayar bileşeni

Etkin sayfalar ön belleği (ESÖ) (Translation Lookaside Buffer ) sanal bellek kullanan işlemcilerde adres dönüştürme işleminin hızlandırılmasını sağlayan bir tekniktir.

Sırasız yürütüm ya da Düzensiz yürütme, bilgisayar mühendisliğinde, günümüz yüksek performanslı işlemcilerinde kullanılan, yüksek gecikmeler sebebiyle harcanan işlemci döngülerini kullanıma sunan bir talimat yürütme yaklaşımıdır.

Sayfa hatası sanal bellek tekniğinde başvurulan veri o anda ana bellekte bulunamıyorsa oluşur ve aranan sayfa ana bellekte mevcut değil demektir.

Sanal bellekte Sayfa hatası meydana geldiğinde çok yüksek bulamama gecikmesine neden olur. Sanal bellek sistemleri tasarlanırken bu durumun yaratacağı yükü engellemek için Sayfa hatası denetimi sağlanmalıdır.

<span class="mw-page-title-main">İşlem (bilgisayar)</span>

Bilgisayar bilimlerinde işlem (process) terimi, belleğe yüklenmiş ve işlemcide (CPU) yürütülmekte olan bir program olarak tanımlanmaktadır. Uygulamalar diskte çalışmaz halde bulunurken ise program olarak tanımlanır. Bir program kendi başına pasif komut yığınıdır ve işlem ise bu komutların aktif olarak yürütülmesidir.

<span class="mw-page-title-main">Program sayacı</span>

Program Sayacı işlemcilerin içinde bir sonraki okunacak komutun bellek adresini tutan bir yazmaçtır. Tasarımın durumuna göre işlemcinin o saat vuruşunda işlediği komutun ya da bir sonraki işleyeceği komutun bellek adresini tutabilir.

Önden yürütüm işlemcinin ön bellekte bulamama durumunda boşa harcayacağı çevrimlerin beklemekte olan buyrukların önceden yürütülmesi ile faydalı şekilde kullanılması esasına dayalı bir bilgisayar mimarisi tekniğidir. Bu şekilde önceden yürütülecek olan buyruklar ile gelecekte oluşacak olan önbellekte bulamama durumları tespit edilerek, işlemcinin boşta olan yürütüm kaynakları kullanılarak faydalı buyruk ve veri ön yüklemeleri yapılması sağlanır.

NetBurst, İntel'in 2000 yılında piyasaya sürdüğü Pentium 4 işlemci markasının mikromimarisine verilen isimdir. 2006 Temmuz'unda Core mikromimarisinin çıkışına kadar İntel işlemcilerin mikromimarisi olmuştur. Selefi P6 mikromimarisine göre en önemli özelliği derin boru hattı yapılanmasıyla avantaj sağladığı yüksek saat sıklığıdır. Temel olarak dört ana parçadan oluşmaktadır: Sıralı(ing. In-order) Ön-Uç(ing. Front-end), Sırasız(ing. out-of-order) yürütme birimi, Tam sayı ve kayan nokta yürütme birimleri ve bellek altdizgesi.

Hata işleme bir bilgisayar programının çalıştığı sırada hata ya da istisnai bir durumla karşılaşması durumunda meydana gelen özel durumda yapılması gereken işlemlerin genel adıdır. Özelleşmiş programlama dili yapıları, kesme gibi donanım işlergeleri ve işletim sistemleri tarafından yerine getirilebilmektedir.

Mano makinesi teorik olarak M. Morris Mano tarafından tanımlanan bir bilgisayardır. Bir merkezi işlem birimi, rasgele erişimli bellek ve bir giriş-çıkış veri yolu içerir. Sınırlı buyruk kümesi ve küçük adres alanı, mikrodenetleyici olarak kullanılmasını sınırlar. Ancak Verilog veya VHDL gibi bir HDL dili kullanılarak 32 bitlik bir birikeç (akümülatör) yazmacına ve 28 bitlik adreslemeye sahip olacak ve yeni talimatlar için yer açacak şekilde kolayca genişletilebilir.

Komut döngüsü veya fetch-decode-execute (al-çöz-yürüt) döngüsü, merkezi işleme biriminin bilgisayar çalıştırıldıktan kapatılana kadar verilen görevleri yerine getirmek için çalıştırdığı döngüdür. Fetch-execute döngüsü modern bilgisayar sistemlerindeki temel operasyonları açıklar.